home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Games: Greatest Hits 1996
/
Amiga Games: Greatest Hits 1996.iso
/
archive
/
userbox
/
publicdomain
/
agaboost0.81.lha
/
AgaBoost0.81
/
AgaBoost.doc
next >
Wrap
Text File
|
1995-11-18
|
12KB
|
363 lines
*** AgaBoost 0.81 ***
by Dennis Arkeryd (1996-05-04).
DESCRIPTION
-----------
External video driver for Shapeshifter and AGA amigas. The fastest one. Doesn't need mmu.
DISCLAMER
---------
The author assumes no responsibility or liability whatsoever for any damage or dataloss
caused by using any version of the AgaBoost driver or any file in this package.
WHATEVER YOU DO READ THIS (feel welcome to skip the rest)
-------------------------
This is version 0.81, ONLY the 256COLOR mode is supported.
Use the AMIGA MOUSE POINTER option.
ONLY USE 70nS SCREENMODES (for example pal hires laced, ntsc hires laced, euro36 hires laced).
( The driver will ofcourse work with 35ns modes, but it will be very slow.
This is nothing specific for this driver. It is due to that almost all of the chipmem bandwith
is needed for the monitor beam refresh )
With 70nS screenmodes REFRESH settings 3 or 2 are recommended with a 25mhz 68030 or faster machine.
With 70nS screenmodes REFRESH setting 2 is recommended with a 40mhz 68030 or faster machine.
( there is not much point using setting 1 )
Use the version of the driver with the SAME "_refresh" EXTENSION AS THE REFRESH SETTING you are using.
You will notice that the driver somtimes MISSES TO CONVERT A FEW pixels, but that after up to
a few seconds a SWEEP GOING FROM LEFT TO RIGHT corrects it.
This is because the driver is developed to work WITHOUT MMU and still have FASTEST POSSIBLE SPEED.
( explained in technical section )
DISTRIBUTION
------------
AgaBoost is freeware. Do whatever you like with it.
REQUIREMENTS
------------
AGA chipset amiga. Kickstart3.0+.
68020+CPU, mmu is NOT required.
Fastram.
ShapeShifter 3.2+ (ShapeShifter 3.1 had a bug in RTYPE_CUSTOM refresh).
INSTALLATION
------------
Put the video driver file "AgaBoost" in any dir you like (eg. your shapeshifter dir/Video Drivers).
USAGE
-----
Go to the "Graphics" settings menu.
A) Select "Screen type" as "External".
B) Select the file AgaBoost in the "External driver" string gadget.
C) Set "Refresh rate" to an apropriate value and use the version of the driver
with the SAME FILENAME EXTENSION AS THE SETTING you are using.
Recommendations when using a 70ns display mode:
With a 40 MHZ 68030 or faster I recommend REFRESH DELAY 2.
(this driver was developed on an a1200/ec030-40mhz)
With slower machines down to a 25MHZ 68030 I think REFRESH DELAY 3 and maybe 2 will do good.
(note: The CPU-board's fast_ram_access_speed is as important as the cpu frequency)
With a 14MHZ 68020. Go to sleep or something... :-)
When using a 35ns display mode:
DON'T DO IT. This driver is in figures significantly faster than Shapeshifter's "Amiga Bitplanes" & "Amiga-Aga-Evd",
but still damn boring slow...
This is because almost all the chipmem bandwith is needed for the monitor beam refresh.
(It's the same phenomen as running the workbench on an ecs machine in hires and 16 colors)
D) Select an apropriate "display mode".
This paragraph has nothing specific to do with my driver,
the only reason that it is here is to (once again) point that only 70ns display modes are worth
using with 256 colors. The graphics refresh will feel like PC TASK with a 35ns mode in 256 colors.
Pal Hires Laced, Ntsc Hires Laced, Euro36 Hires Laced are 70 ns modes.
I recommend the EURO36 for your eyes (can also be used on 15khz monitors with the "15khz hack").
MEMORY USAGE
------------
The driver uses the XScreenSize*YScreenSize bytes of fastram for the mac display memory.
It additionally needs around 150k of fastram, most of it used by a table for the cpu c2p pass.
It uses 2*XScreenSize*YScreenSize bytes of chipram for storing the amiga display memory and a
"half planar" buffer. This "half planar" buffer doesn't need at all to be that big and
will be made minimal in next version.
Compared with "Amiga AGA Evd" this driver uses more chipram, but less fastram which means
you get a little bit more mac memory to play with.
SPEED
-----
Here are some comparisons between "AgaBoost", "Amiga AGA Evd" and "Shapshifter Amiga bitplanes",
all tests with refresh setting 2 and 256 colors.
Computer Screenmode
a1200/blizzard1230-I/ec030-40mhz | Euro36 hires laced 640*400 70ns.
Tested Time (stopwatch method)
Shapeshifter bitplanes | Amiga AGA Evd | AgaBoost
Wolf3d demo 320*200, 24.05 21.85 15.45 ((quite well playable))
walktest.
MacAnimViewer, 10.25 9.30 6.35
yellyfish.fli five rounds.
Note: The test values for Shapeshifter bitplanes are quite irrelevant in this non mmu test, due to that
(*) it converts all of the display all the time, the number of refreshes/second is much lower than
the other cases. The reason all of the cpu time doesn't get eaten by the refresh routine is
probably due to blitter waiting.
(let's say that the display is made of regions 1,2,3,4 and that all routines are equally fast.
If for instance only region 4 gets changed, then "Shapeshifter bitplanes"
changes 1,2,3,4 during time T while the other ones change 4,4,4,4)
Computer Screenmode
a1200/blizzard1230-I/ec030-40mhz | Euro36 SuperHires 1280*256 35ns.
Tested Time (stopwatch method)
Shapeshifter bitplanes | Amiga AGA Evd | AgaBoost
MacAnimViewer, 18.75 16.95 11.95
yellyfish.fli five rounds
Note: The test values for Shapeshifter bitplanes are quite irrelevant, see (*).
Computer Screenmode
a1200/blizzard1230-I/ec030-40mhz | Euro36 SuperHires Laced 1280*400 35ns.
Tested Time (stopwatch method)
Shapeshifter bitplanes | Amiga AGA Evd | AgaBoost
Wolf3d demo, 320*200, 53.00 44.70 26.80
walktest.
Note: The test values for Shapeshifter bitplanes are quite irrelevant, see (*).
Without getting the [cpu converted frames / s] values for "Shapeshifter bitplanes" and "Amiga AGA Evd"
I simply don't know the exact speed relations.
However, by the test results I think it would be a safe guess that AgaBoost is at least twice
as fast as "Amiga Aga Evd".
Note that due to the blitter pass the maximum throughput speed with AgaBoost will be
320*216 at a 25fps rate ~=1.728mb/s.
But I don't think you will use bigger windows for (graphics intensive) game & animation playing.
Note also that the maxiumum amount of memory the cpu can move to chipram is only a few times
higher than that, so for instance having a 640*480 25fps cpu_only conversion routine would mean
that almost all or more than all :-) of the cpu time would go to chipmem data shuffling.
At last note that tests with Macintosh graphics speed test programs like "speedometer"
DOES NOT produce correct results with AgaBoost, nor any other driver using the blitter
(either it is an active part of c2p or because of using super-bitmap-windows).
TECHNICAL STUFF (very rough text)
---------------------------------
C2P TECHNIQUE
-------------
AgaBoost uses a 2 pass c2p technique. One cpu pass and one blitter pass.
In the "for the eye best looking" version 8pixels can be converted with 8 instructions,
using a 2mb table.
A faster version (on a 030) will use the following 12 instructions and a 2 meg table:
movem.w (a0)+,d0-d3
movem.l (a1,d0.w*8),d4-d5
lea (a2,d1.w*8),a6
or.l (a6)+,d4
or.l (a6)+,d5
lea (a3,d2.w*8),a6
or.l (a6)+,d4
or.l (a6)+,d5
lea (a4,d3.w*8),a6
or.l (a6)+,d4
or.l (a6)+,d5
movem.l d4-d5,-(a5)
(a similiar source called "blitscreen" or something can be found on aminet)
The data will be converted like this:
Chunky:
01234567 01234567 01234567 01234567 01234567 01234567 01234567 01234567
After cpu pass:
00000000 11111111 22222222 33333333 44444444 55555555 66666666 77777777 ...
(I call this mode "half planar")
After blitter pass:
Normal planar mode (( one row 0, one row 1 and so on ))
This program does not work exactly that way though. By taking use of "free cycles" the cpu pass
does some more work at a minimum time cost which makes the blitter able two convert around 25% more,
ugly flickering is avoided and much less blitter settings are needed.
It also only uses a 128kb table instead of a 2meg one.
In this version the halfplanar data eats as much chipram as the mac display,
but it doesn't need at all to be that big and will be made minimal in next version.
CHANGE NOTICING TECHNIQUE
-------------------------
AgaBoost is created to work with machines without mmu, therefore it uses a "delta buffer" technique
(like "Amiga Aga Evd"). But the classical deltabuffer checking where every pixel get's checked
(if it has been changed since the last refresh) at every refresh takes a lot of cpu time.
Therefore this driver uses 2 methods to minimize the deltacheck time:
METHOD 1:
Only 43.75% of the pixels in each block are checked (in longword checks) .
(each block is 16*8pixels)
Due to this changes are MISSED sometimes, which you WILL NOTICE.
To avoid permanent losses a "windscreen wiper" function is added
(the rate of this is lowered on heavy graphics load).
METHOD 2:
Blocks which haven't been changed in 3 seconds
will during low graphics load get checked between:
every 4th and every 2nd refresh depending on which _refresh extension of the driver you are using.
and during high graphics load:
twice a second when using the driver with correct _refresh extension.
This method will give a limited "slow on reactions effect", but will be very little disturbing
as long as you use AMIGA MOUSE POINTER option.
Method 2 makes method1 somwhat obsolete. Maybe I'll release an all pixel checking version.
Last but not least. The deltabuffer for this driver does not like some others eat as much fastmem
as the mac display. This driver uses a "hash function" instead, and therefore it only needs to
store one longword/block (16*8 pixels).
OTHER NOTES
-----------
The code is mainly written according to C.Bauer's guidelines, storing its variables in a "context" structure.
However, it will not give more than one screen if used with a possible future implementation of
Shapeshifter allowing multiple screens.
When and if that gets implemented I will ofcourse release a version of AgaBoost that gives that.
( if not the amiga bitplane refresh mode gets significantly improved :-) )
HISTORY
-------
v0.8 (1996-05-04) : Initial release.
v0.81 (1996-05-04) : "Wiper function" set according to refresh, in v0.8 the time before correcting
a "miss" was longer than intended in refresh3-5 versions.
(as only about 4 hours has passed between I hope not so many people have downloaded v0.8)
2 DO
----
Implementation of 4bit mode
( yes, it would be twice as fast (both cpu&blitter pass), but 16 times as boring I think ;-) ).
Reduce usage (or waste) of chipmem ("half planar" buffer).
One file instead of different "_refresh" versions.
(Shapeshifter doesn't currently provide the refresh value to the driver so currently you'd
have to do your own mesaurement counting the time between a certain number of phoney refreshes)
040 optimized version if it gives more speed.
MMU version.
(I'll sure implement the two last ones as I got hold of a lovely A4000/040 this week :--) )
MAYBE 2 DO
----------
Feel welcome to mail me if any of following sounds interesting or if you have any own ideas.
256->64 and 256->32 dithered modes.
(would be as fast as 256, except for extreme palette setting time)
Could be used with ecs/lores or with aga/35ns for better performance.
Screenmode swap by keypress while Shapeshifter is running.
(would require modified Shapeshifter to do it in a system friendly way though)
Nice for game playing, animation viewing.
Amiga window version.
All pixels delta check version.
AUTHOR
------
Dennis Arkeryd.
EMAIL: z94arde@mtek.chalmers.se
AMIGA KICKS ASS!